Castle Project
   HOME

TheInfoList



OR:

Castle Project (or Castle for short) is an
open-source Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
application framework In computer programming, an application framework consists of a software framework used by software developers to implement the standard structure of application software. Application frameworks became popular with the rise of graphical user int ...
for
CLI CLI may refer to: Computing * Call Level Interface, an SQL database management API * Command-line interface, of a computer program * Command-line interpreter or command language interpreter; see List of command-line interpreters * CLI (x86 instruc ...
platform implementations (e.g.,
.NET Framework The .NET Framework (pronounced as "''dot net"'') is a proprietary software framework developed by Microsoft that runs primarily on Microsoft Windows. It was the predominant implementation of the Common Language Infrastructure (CLI) until bein ...
). It was releasedon November 6, 2014. The project was founded by a member of the
Apache Avalon Apache Avalon is a computer software framework developed in 1999 as a project to provide a reusable component framework for container (server) applications. Avalon pioneered the use of design patterns such as separation of concerns (SoC) and invers ...
and the
Apache Excalibur Apache Excalibur project produces a set of libraries for component based programming in the Java language. Its main products include the inversion of control (IoC) framework Avalon, an Avalon-based container named Fortress, and a set of Avalon com ...
projects.


History

The project was founded by Hamilton Verissimo de Oliveira (aka "Hammett"), who was a member of the
Apache Avalon Apache Avalon is a computer software framework developed in 1999 as a project to provide a reusable component framework for container (server) applications. Avalon pioneered the use of design patterns such as separation of concerns (SoC) and invers ...
and the
Apache Excalibur Apache Excalibur project produces a set of libraries for component based programming in the Java language. Its main products include the inversion of control (IoC) framework Avalon, an Avalon-based container named Fortress, and a set of Avalon com ...
projects. Keenly interested in the development of an
inversion of control In software engineering, inversion of control (IoC) is a design pattern in which custom-written portions of a computer program receive the flow of control from a generic framework. A software architecture with this design inverts control as compa ...
container, after he resigned from Avalon and became disillusioned with Excalibur, he went on to develop and release his own for the .NET platform. Hammett was joined by other developers after publishing a series of articles on
Code Project Code Project (formerly The Code Project) is a community for computer programmers with articles on different topics and programming languages such as web development, software development, C++, Java, and other topics. Once a visitor registers a us ...
, and the Castle Project eventually expanded its mission "to provide a simple set of tools to speed up the development of common enterprise and web applications while promoting good architecture". The Castle Project continues to gain acceptance and mind-share from the .NET community, including recognition from Microsoft thought leaders as a framework to assist with building "robust, extensible, working software". In 2006, Hammett started his own company to offer commercial support for the Castle Project and for the applications developed using the framework. In August 2008, he joined Microsoft as a Program Manager on the MEF team. On October 31, 2008, Hammett announced on his blog that the Castle Project had been split, and subsequently all subprojects would be maintained and released independently. The first project to be released after the split was DynamicProxy, on May 4, 2009.


Features

*
MicroKernel In computer science, a microkernel (often abbreviated as μ-kernel) is the near-minimum amount of software that can provide the mechanisms needed to implement an operating system (OS). These mechanisms include low-level address space management, ...
, a core lightweight
inversion of control In software engineering, inversion of control (IoC) is a design pattern in which custom-written portions of a computer program receive the flow of control from a generic framework. A software architecture with this design inverts control as compa ...
(IoC) container. *
Windsor Windsor may refer to: Places Australia * Windsor, New South Wales ** Municipality of Windsor, a former local government area * Windsor, Queensland, a suburb of Brisbane, Queensland **Shire of Windsor, a former local government authority around Wi ...
, a flexible and powerful configurable Inversion of Control container suitable for enterprise requirements. *
MonoRail A monorail (from "mono", meaning "one", and "rail") is a railway in which the track consists of a single rail or a beam. Colloquially, the term "monorail" is often used to describe any form of elevated rail or people mover. More accurately, ...
, a
MVC MVC may refer to: Science and technology * Maximum-value composite procedure, an imaging procedure * Multivariable calculus, a concept in mathematics * Multivariable control, a concept in process engineering * Mechanical vapor compression, a desal ...
web application framework A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build and ...
, inspired by
Ruby on Rails Ruby on Rails (simplified as Rails) is a server-side web application framework written in Ruby under the MIT License. Rails is a model–view–controller (MVC) framework, providing default structures for a database, a web service, and web p ...
*
ActiveRecord In software engineering, the active record pattern is an architectural pattern. It is found in software that stores in-memory object data in relational databases. It was named by Martin Fowler in his 2003 book ''Patterns of Enterprise Application ...
, an implementation of the
active record pattern In software engineering, the active record pattern is an architectural pattern. It is found in software that stores in-memory object data in relational databases. It was named by Martin Fowler in his 2003 book ''Patterns of Enterprise Application ...
built on top of
NHibernate NHibernate is an object–relational mapping (ORM) solution for the Microsoft .NET platform. It provides a framework for mapping an object-oriented domain model to a traditional relational database. Its purpose is to relieve the developer from a ...
. * Aspect#, a simple
aspect-oriented programming In computing, aspect-oriented programming (AOP) is a programming paradigm that aims to increase modularity by allowing the separation of cross-cutting concerns. It does so by adding behavior to existing code (an advice) ''without'' modifying t ...
framework compliant wit
AOP Alliance
recommendations. * DynamicProxy, a popular lightweight proxy generator for interfaces and concrete classes. * NVelocity, an improved fork from the official port of the
Velocity Velocity is the directional speed of an object in motion as an indication of its rate of change in position as observed from a particular frame of reference and as measured by a particular standard of time (e.g. northbound). Velocity is a ...
template engine.


References


External links

*
Zen and the art of Castle maintenance

Oren Eini's blog
.NET programming tools Web frameworks {{web-software-stub